package str;
/**
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。
 * <p>
 * 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ，就返回 0。
 * <p>
 * 假设环境不允许存储 64 位整数（有符号或无符号）。
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：x = 123
 * 输出：321
 * 示例 2：
 * <p>
 * 输入：x = -123
 * 输出：-321
 * 示例 3：
 * <p>
 * 输入：x = 120
 * 输出：21
 * 示例 4：
 * <p>
 * 输入：x = 0
 * 输出：0
 *  
 * <p>
 * 提示：
 * <p>
 * -231 <= x <= 231 - 1
 * <p>
 * 作者：力扣 (LeetCode)
 * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnx13t/
 * 来源：力扣（LeetCode）
 * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
 */

/**
 * 执行结果：
 * 通过
 * 显示详情
 * 执行用时：
 * 0 ms
 * , 在所有 Java 提交中击败了
 * 100.00%
 * 的用户
 * 内存消耗：
 * 48.2 MB
 * , 在所有 Java 提交中击败了
 * 5.01%
 * 的用户
 * 通过测试用例：
 * 477 / 477
 * 炫耀一下:
 */
public class LeetCode_str2 {
    public static void main(String[] args) {
//    char arr[] = new char[]{'H','a','n','n','a','h'};
        int num = 1534236469;
        System.out.println(LeetCode_str2.reverse(num));
    }

    public static int reverse(int x) {
        if (x == 0) {
            return x;
        }
        StringBuilder str = new StringBuilder(String.valueOf(x));
        System.out.println(str);
        while (true) {
            if (str.indexOf("-") != -1) {
                str = str.delete(0, 1);
            }
            if (str.lastIndexOf("0") != -1 && str.lastIndexOf("0") == str.length() - 1) {
                str = str.delete(str.length() - 1, str.length());
                System.out.println(str);
            } else {
                break;
            }
        }
        StringBuilder result = new StringBuilder();
        for (int i = str.length() - 1; i >= 0; i--) {
            result = result.append(str.charAt(i));
        }


        try {
            return String.valueOf(x).contains("-") ? -Integer.parseInt(String.valueOf(result)) : Integer.parseInt(String.valueOf(result));
        }
        catch (Exception e){
            return 0;
        }
    }

}
